using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Credinka.Ayni.SEA.EN;
namespace Credinka.Ayni.SEA.AD
{
    public class adProducto : adGeneral
    {

        public adProducto(SqlConnection con)
        {
            conexion = con;
        }

        public List<enProducto> fListar(enProducto poenProducto)
        {
            List<enProducto> loenProducto = null;
            SqlCommand cmd = new SqlCommand("sPAS_ConsultarProducto", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piNumeroPagina", SqlDbType.Int).Value = poenProducto.NumeroPagina;
            cmd.Parameters.Add("@piNumeroRegistros", SqlDbType.Int).Value = poenProducto.NumeroRegistros;
            cmd.Parameters.Add("@piiCodigoFamilia", SqlDbType.Int).Value = poenProducto.CodigoFamilia;
            cmd.Parameters.Add("@piiCodigoProducto", SqlDbType.Int).Value = poenProducto.CodigoProducto;
            SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
            if (drd != null)
            {
                int pos_TotalRegistros = drd.GetOrdinal("TotalRegistros");
                int pos_RowNumber = drd.GetOrdinal("RowNumber");
                int pos_IdProducto = drd.GetOrdinal("iIdProducto");
                int pos_CodigoFamilia = drd.GetOrdinal("iCodigoFamilia");
                int pos_Familia = drd.GetOrdinal("Familia");
                int pos_CodigoProducto = drd.GetOrdinal("iCodigoProducto");
                int pos_Producto = drd.GetOrdinal("Producto");
                int pos_CodigoSubProducto = drd.GetOrdinal("iCodigoSubProducto");                
                int pos_CodigoMoneda = drd.GetOrdinal("iCodigoMoneda");
                int pos_Moneda = drd.GetOrdinal("Moneda");
                int pos_FechaVigenciaInicioComercial = drd.GetOrdinal("dFechaVigenciaInicioComercial");
                int pos_FechaVigenciaFinComercial = drd.GetOrdinal("dFechaVigenciaFinComercial");
                int pos_FechaVigenciaInicioOperativa = drd.GetOrdinal("dFechaVigenciaInicioOperativa");
                int pos_FechaVigenciaFinOperativa = drd.GetOrdinal("dFechaVigenciaFinOperativa");
                int pos_NombreProducto = drd.GetOrdinal("vNombreProducto");
                int pos_CodigoAnoBase = drd.GetOrdinal("iCodigoAnoBase");
                int pos_MontoMinimoCuenta = drd.GetOrdinal("nMontoMinimoCuenta");
                int pos_MontoMinimoAperturaPN = drd.GetOrdinal("nMontoMinimoAperturaPN");
                int pos_MontoMinimoAperturaPJ = drd.GetOrdinal("nMontoMinimoAperturaPJ");
                int pos_CancelacionAutomatica = drd.GetOrdinal("bCancelacionAutomatica");
                int pos_CancelacionAnticipada = drd.GetOrdinal("bCancelacionAnticipada");
                int pos_RenovacionAutomatica = drd.GetOrdinal("bRenovacionAutomatica");
                int pos_CobroMantenimiento = drd.GetOrdinal("bCobroMantenimiento");
                int pos_NumeroDiasMantenimiento = drd.GetOrdinal("siNumeroDiasMantenimiento");
                int pos_CobroCargos = drd.GetOrdinal("bCobroCargos");
                int pos_CobroITF = drd.GetOrdinal("bCobroITF");
                int pos_UsoTalonario = drd.GetOrdinal("bUsoTalonario");
                int pos_RangoEdadMinimo = drd.GetOrdinal("siRangoEdadMinimo");
                int pos_RangoEdadMaximo = drd.GetOrdinal("siRangoEdadMaximo");
                int pos_RangoMontoMinimo = drd.GetOrdinal("nRangoMontoMinimo");
                int pos_RangoMontoMaximo = drd.GetOrdinal("nRangoMontoMaximo");
                int pos_RangoTasaMinima = drd.GetOrdinal("nRangoTasaMinima");
                int pos_RangoTasaMaxima = drd.GetOrdinal("nRangoTasaMaxima");
                int pos_CodigoNumeroAperturaOB = drd.GetOrdinal("iCodigoNumeroAperturaOB");
                int pos_CodigoProductoSisCredInka = drd.GetOrdinal("iCodigoProductoSisCredInka");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                int pos_Eliminado = drd.GetOrdinal("bEliminado");
                int pos_AudNombreUsuarioCreacion = drd.GetOrdinal("vAudNombreUsuarioCreacion");
                int pos_AudFechaCreacion = drd.GetOrdinal("dtAudFechaCreacion");
                int pos_AudIPCreacion = drd.GetOrdinal("vAudIPCreacion");
                int pos_AudMACCreacion = drd.GetOrdinal("vAudMACCreacion");
                int pos_AudNombreUsuarioModificacion = drd.GetOrdinal("vAudNombreUsuarioModificacion");
                int pos_AudFechaModificacion = drd.GetOrdinal("dtAudFechaModificacion");
                int pos_AudIPModificacion = drd.GetOrdinal("vAudIPModificacion");
                int pos_AudMACModificacion = drd.GetOrdinal("vAudMACModificacion");
                loenProducto = new List<enProducto>();
                enProducto oenProducto;
                while (drd.Read())
                {
                    oenProducto = new enProducto();
                    oenProducto.TotalRegistros = drd.GetInt32(pos_TotalRegistros);
                    oenProducto.RowNumber = drd.GetInt32(pos_RowNumber);
                    oenProducto.IdProducto = drd.GetInt32(pos_IdProducto);
                    oenProducto.CodigoFamilia = drd.GetInt32(pos_CodigoFamilia);
                    oenProducto.Familia = drd.GetString(pos_Familia);
                    oenProducto.CodigoProducto = drd.GetInt32(pos_CodigoProducto);
                    oenProducto.Producto = drd.GetString(pos_Producto);
                    oenProducto.CodigoSubProducto = drd.GetInt32(pos_CodigoSubProducto);
                    oenProducto.CodigoMoneda = drd.GetInt32(pos_CodigoMoneda);
                    oenProducto.Moneda = drd.GetString(pos_Moneda);
                    oenProducto.FechaVigenciaInicioComercial = drd.GetDateTime(pos_FechaVigenciaInicioComercial);
                    oenProducto.FechaVigenciaFinComercial = (drd.IsDBNull(pos_FechaVigenciaFinComercial) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_FechaVigenciaFinComercial));
                    oenProducto.FechaVigenciaInicioOperativa = drd.GetDateTime(pos_FechaVigenciaInicioOperativa);
                    oenProducto.FechaVigenciaFinOperativa = (drd.IsDBNull(pos_FechaVigenciaFinOperativa) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_FechaVigenciaFinOperativa));
                    oenProducto.NombreProducto = drd.GetString(pos_NombreProducto);
                    oenProducto.CodigoAnoBase = drd.GetInt32(pos_CodigoAnoBase);                    
                    oenProducto.MontoMinimoCuenta = drd.GetDecimal(pos_MontoMinimoCuenta);
                    oenProducto.MontoMinimoAperturaPN = drd.GetDecimal(pos_MontoMinimoAperturaPN);
                    oenProducto.MontoMinimoAperturaPJ = drd.GetDecimal(pos_MontoMinimoAperturaPJ);
                    oenProducto.CancelacionAutomatica = drd.GetBoolean(pos_CancelacionAutomatica);
                    oenProducto.CancelacionAnticipada = drd.GetBoolean(pos_CancelacionAnticipada);
                    oenProducto.RenovacionAutomatica = drd.GetBoolean(pos_RenovacionAutomatica);
                    oenProducto.CobroMantenimiento = drd.GetBoolean(pos_CobroMantenimiento);
                    oenProducto.NumeroDiasMantenimiento = drd.GetInt16(pos_NumeroDiasMantenimiento);
                    oenProducto.CobroCargos = drd.GetBoolean(pos_CobroCargos);
                    oenProducto.CobroITF = drd.GetBoolean(pos_CobroITF);
                    oenProducto.UsoTalonario = drd.GetBoolean(pos_UsoTalonario);
                    oenProducto.RangoEdadMinimo = (drd.IsDBNull(pos_RangoEdadMinimo) ? (short)0 : drd.GetInt16(pos_RangoEdadMinimo));
                    oenProducto.RangoEdadMaximo = (drd.IsDBNull(pos_RangoEdadMaximo) ? (short)0 : drd.GetInt16(pos_RangoEdadMaximo));
                    oenProducto.RangoMontoMinimo = (drd.IsDBNull(pos_RangoMontoMinimo) ? (decimal)0 : drd.GetDecimal(pos_RangoMontoMinimo));
                    oenProducto.RangoMontoMaximo = (drd.IsDBNull(pos_RangoMontoMaximo) ? (decimal)0 : drd.GetDecimal(pos_RangoMontoMaximo));
                    oenProducto.RangoTasaMinima = (drd.IsDBNull(pos_RangoTasaMinima) ? (decimal)0 : drd.GetDecimal(pos_RangoTasaMinima));
                    oenProducto.RangoTasaMaxima = (drd.IsDBNull(pos_RangoTasaMaxima) ? (decimal)0 : drd.GetDecimal(pos_RangoTasaMaxima));
                    oenProducto.CodigoNumeroAperturaOB = (drd.IsDBNull(pos_CodigoNumeroAperturaOB) ? 0 : drd.GetInt32(pos_CodigoNumeroAperturaOB));
                    oenProducto.CodigoProductoSisCredInka = (drd.IsDBNull(pos_CodigoProductoSisCredInka) ? 0 : drd.GetInt32(pos_CodigoProductoSisCredInka));
                    oenProducto.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                    oenProducto.Eliminado = drd.GetBoolean(pos_Eliminado);
                    oenProducto.AudNombreUsuarioCreacion = drd.GetString(pos_AudNombreUsuarioCreacion);
                    oenProducto.AudFechaCreacion = drd.GetDateTime(pos_AudFechaCreacion);
                    oenProducto.AudIPCreacion = drd.GetString(pos_AudIPCreacion);
                    oenProducto.AudMACCreacion = drd.GetString(pos_AudMACCreacion);
                    oenProducto.AudNombreUsuarioModificacion = (drd.IsDBNull(pos_AudNombreUsuarioModificacion) ? "" : drd.GetString(pos_AudNombreUsuarioModificacion));
                    oenProducto.AudFechaModificacion = (drd.IsDBNull(pos_AudFechaModificacion) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_AudFechaModificacion));
                    oenProducto.AudIPModificacion = (drd.IsDBNull(pos_AudIPModificacion) ? "" : drd.GetString(pos_AudIPModificacion));
                    oenProducto.AudMACModificacion = (drd.IsDBNull(pos_AudMACModificacion) ? "" : drd.GetString(pos_AudMACModificacion));
                    loenProducto.Add(oenProducto);
                }
            }
            return (loenProducto);
        }

        public List<enProducto> fListarPorId(enProducto poenProducto)
        {
            List<enProducto> loenProducto = null;
            SqlCommand cmd = new SqlCommand("sPAS_ConsultarProductoPorId", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdProducto", SqlDbType.Int).Value = poenProducto.IdProducto;
            SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleRow);
            if (drd != null)
            {
                int pos_IdProducto = drd.GetOrdinal("iIdProducto");
                int pos_CodigoFamilia = drd.GetOrdinal("iCodigoFamilia");
                int pos_CodigoProducto = drd.GetOrdinal("iCodigoProducto");
                int pos_CodigoSubProducto = drd.GetOrdinal("iCodigoSubProducto");
                int pos_CodigoMoneda = drd.GetOrdinal("iCodigoMoneda");
                int pos_FechaVigenciaInicioComercial = drd.GetOrdinal("dFechaVigenciaInicioComercial");
                int pos_FechaVigenciaFinComercial = drd.GetOrdinal("dFechaVigenciaFinComercial");
                int pos_FechaVigenciaInicioOperativa = drd.GetOrdinal("dFechaVigenciaInicioOperativa");
                int pos_FechaVigenciaFinOperativa = drd.GetOrdinal("dFechaVigenciaFinOperativa");
                int pos_NombreProducto = drd.GetOrdinal("vNombreProducto");
                int pos_CodigoAnoBase = drd.GetOrdinal("iCodigoAnoBase");                
                int pos_MontoMinimoCuenta = drd.GetOrdinal("nMontoMinimoCuenta");
                int pos_MontoMinimoAperturaPN = drd.GetOrdinal("nMontoMinimoAperturaPN");
                int pos_MontoMinimoAperturaPJ = drd.GetOrdinal("nMontoMinimoAperturaPJ");
                int pos_CancelacionAutomatica = drd.GetOrdinal("bCancelacionAutomatica");
                int pos_CancelacionAnticipada = drd.GetOrdinal("bCancelacionAnticipada");
                int pos_RenovacionAutomatica = drd.GetOrdinal("bRenovacionAutomatica");
                int pos_CobroMantenimiento = drd.GetOrdinal("bCobroMantenimiento");
                int pos_NumeroDiasMantenimiento = drd.GetOrdinal("siNumeroDiasMantenimiento");
                int pos_CobroCargos = drd.GetOrdinal("bCobroCargos");
                int pos_CobroITF = drd.GetOrdinal("bCobroITF");
                int pos_UsoTalonario = drd.GetOrdinal("bUsoTalonario");
                int pos_RangoEdadMinimo = drd.GetOrdinal("siRangoEdadMinimo");
                int pos_RangoEdadMaximo = drd.GetOrdinal("siRangoEdadMaximo");
                int pos_RangoMontoMinimo = drd.GetOrdinal("nRangoMontoMinimo");
                int pos_RangoMontoMaximo = drd.GetOrdinal("nRangoMontoMaximo");
                int pos_RangoTasaMinima = drd.GetOrdinal("nRangoTasaMinima");
                int pos_RangoTasaMaxima = drd.GetOrdinal("nRangoTasaMaxima");
                int pos_CodigoNumeroAperturaOB = drd.GetOrdinal("iCodigoNumeroAperturaOB");
                int pos_CodigoProductoSisCredInka = drd.GetOrdinal("iCodigoProductoSisCredInka");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                int pos_Eliminado = drd.GetOrdinal("bEliminado");
                int pos_AudNombreUsuarioCreacion = drd.GetOrdinal("vAudNombreUsuarioCreacion");
                int pos_AudFechaCreacion = drd.GetOrdinal("dtAudFechaCreacion");
                int pos_AudIPCreacion = drd.GetOrdinal("vAudIPCreacion");
                int pos_AudMACCreacion = drd.GetOrdinal("vAudMACCreacion");
                int pos_AudNombreUsuarioModificacion = drd.GetOrdinal("vAudNombreUsuarioModificacion");
                int pos_AudFechaModificacion = drd.GetOrdinal("dtAudFechaModificacion");
                int pos_AudIPModificacion = drd.GetOrdinal("vAudIPModificacion");
                int pos_AudMACModificacion = drd.GetOrdinal("vAudMACModificacion");
                loenProducto = new List<enProducto>();
                enProducto oenProducto;
                while (drd.Read())
                {
                    oenProducto = new enProducto();
                    oenProducto.IdProducto = drd.GetInt32(pos_IdProducto);
                    oenProducto.CodigoFamilia = drd.GetInt32(pos_CodigoFamilia);
                    oenProducto.CodigoProducto = drd.GetInt32(pos_CodigoProducto);
                    oenProducto.CodigoSubProducto = drd.GetInt32(pos_CodigoSubProducto);
                    oenProducto.CodigoMoneda = drd.GetInt32(pos_CodigoMoneda);
                    oenProducto.FechaVigenciaInicioComercial = drd.GetDateTime(pos_FechaVigenciaInicioComercial);
                    oenProducto.FechaVigenciaFinComercial = (drd.IsDBNull(pos_FechaVigenciaFinComercial) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_FechaVigenciaFinComercial));
                    oenProducto.FechaVigenciaInicioOperativa = drd.GetDateTime(pos_FechaVigenciaInicioOperativa);
                    oenProducto.FechaVigenciaFinOperativa = (drd.IsDBNull(pos_FechaVigenciaFinOperativa) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_FechaVigenciaFinOperativa));
                    oenProducto.NombreProducto = drd.GetString(pos_NombreProducto);
                    oenProducto.CodigoAnoBase = drd.GetInt32(pos_CodigoAnoBase);
                    oenProducto.MontoMinimoCuenta = drd.GetDecimal(pos_MontoMinimoCuenta);
                    oenProducto.MontoMinimoAperturaPN = drd.GetDecimal(pos_MontoMinimoAperturaPN);
                    oenProducto.MontoMinimoAperturaPJ = drd.GetDecimal(pos_MontoMinimoAperturaPJ);
                    oenProducto.CancelacionAutomatica = drd.GetBoolean(pos_CancelacionAutomatica);
                    oenProducto.CancelacionAnticipada = drd.GetBoolean(pos_CancelacionAnticipada);
                    oenProducto.RenovacionAutomatica = drd.GetBoolean(pos_RenovacionAutomatica);
                    oenProducto.CobroMantenimiento = drd.GetBoolean(pos_CobroMantenimiento);
                    oenProducto.NumeroDiasMantenimiento = drd.GetInt16(pos_NumeroDiasMantenimiento);
                    oenProducto.CobroCargos = drd.GetBoolean(pos_CobroCargos);
                    oenProducto.CobroITF = drd.GetBoolean(pos_CobroITF);
                    oenProducto.UsoTalonario = drd.GetBoolean(pos_UsoTalonario);
                    oenProducto.RangoEdadMinimo = (drd.IsDBNull(pos_RangoEdadMinimo) ? (short)0 : drd.GetInt16(pos_RangoEdadMinimo));
                    oenProducto.RangoEdadMaximo = (drd.IsDBNull(pos_RangoEdadMaximo) ? (short)0 : drd.GetInt16(pos_RangoEdadMaximo));
                    oenProducto.RangoMontoMinimo = (drd.IsDBNull(pos_RangoMontoMinimo) ? (decimal)0 : drd.GetDecimal(pos_RangoMontoMinimo));
                    oenProducto.RangoMontoMaximo = (drd.IsDBNull(pos_RangoMontoMaximo) ? (decimal)0 : drd.GetDecimal(pos_RangoMontoMaximo));
                    oenProducto.RangoTasaMinima = (drd.IsDBNull(pos_RangoTasaMinima) ? (decimal)0 : drd.GetDecimal(pos_RangoTasaMinima));
                    oenProducto.RangoTasaMaxima = (drd.IsDBNull(pos_RangoTasaMaxima) ? (decimal)0 : drd.GetDecimal(pos_RangoTasaMaxima));
                    oenProducto.CodigoNumeroAperturaOB = (drd.IsDBNull(pos_CodigoNumeroAperturaOB) ? 0 : drd.GetInt32(pos_CodigoNumeroAperturaOB));
                    oenProducto.CodigoProductoSisCredInka = (drd.IsDBNull(pos_CodigoProductoSisCredInka) ? 0 : drd.GetInt32(pos_CodigoProductoSisCredInka));
                    oenProducto.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                    oenProducto.Eliminado = drd.GetBoolean(pos_Eliminado);
                    oenProducto.AudNombreUsuarioCreacion = drd.GetString(pos_AudNombreUsuarioCreacion);
                    oenProducto.AudFechaCreacion = drd.GetDateTime(pos_AudFechaCreacion);
                    oenProducto.AudIPCreacion = drd.GetString(pos_AudIPCreacion);
                    oenProducto.AudMACCreacion = drd.GetString(pos_AudMACCreacion);
                    oenProducto.AudNombreUsuarioModificacion = (drd.IsDBNull(pos_AudNombreUsuarioModificacion) ? "" : drd.GetString(pos_AudNombreUsuarioModificacion));
                    oenProducto.AudFechaModificacion = (drd.IsDBNull(pos_AudFechaModificacion) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_AudFechaModificacion));
                    oenProducto.AudIPModificacion = (drd.IsDBNull(pos_AudIPModificacion) ? "" : drd.GetString(pos_AudIPModificacion));
                    oenProducto.AudMACModificacion = (drd.IsDBNull(pos_AudMACModificacion) ? "" : drd.GetString(pos_AudMACModificacion));
                    loenProducto.Add(oenProducto);
                }
            }
            return (loenProducto);
        }

        public int fRegistrar(enProducto poenProducto, List<DataTable> pldtProductoCaracteristica)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sPAS_RegistrarProducto", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiCodigoFamilia", SqlDbType.Int).Value = poenProducto.CodigoFamilia;
            cmd.Parameters.Add("@piiCodigoProducto", SqlDbType.Int).Value = poenProducto.CodigoProducto;
            cmd.Parameters.Add("@piiCodigoSubProducto", SqlDbType.Int).Value = poenProducto.CodigoSubProducto;
            cmd.Parameters.Add("@piiCodigoMoneda", SqlDbType.Int).Value = poenProducto.CodigoMoneda;
            cmd.Parameters.Add("@pidFechaVigenciaInicioComercial", SqlDbType.Date).Value = poenProducto.FechaVigenciaInicioComercial;
            cmd.Parameters.Add("@pidFechaVigenciaFinComercial", SqlDbType.Date).Value = poenProducto.FechaVigenciaFinComercial;
            cmd.Parameters.Add("@pidFechaVigenciaInicioOperativa", SqlDbType.Date).Value = poenProducto.FechaVigenciaInicioOperativa;
            cmd.Parameters.Add("@pidFechaVigenciaFinOperativa", SqlDbType.Date).Value = poenProducto.FechaVigenciaFinOperativa;
            cmd.Parameters.Add("@pivNombreProducto", SqlDbType.VarChar).Value = poenProducto.NombreProducto;
            cmd.Parameters.Add("@piiCodigoAnoBase", SqlDbType.Int).Value = poenProducto.CodigoAnoBase;
            cmd.Parameters.Add("@pinMontoMinimoCuenta", SqlDbType.Decimal).Value = poenProducto.MontoMinimoCuenta;
            cmd.Parameters.Add("@pinMontoMinimoAperturaPN", SqlDbType.Decimal).Value = poenProducto.MontoMinimoAperturaPN;
            cmd.Parameters.Add("@pinMontoMinimoAperturaPJ", SqlDbType.Decimal).Value = poenProducto.MontoMinimoAperturaPJ;
            cmd.Parameters.Add("@pibCancelacionAutomatica", SqlDbType.Bit).Value = poenProducto.CancelacionAutomatica;
            cmd.Parameters.Add("@pibCancelacionAnticipada", SqlDbType.Bit).Value = poenProducto.CancelacionAnticipada;
            cmd.Parameters.Add("@pibRenovacionAutomatica", SqlDbType.Bit).Value = poenProducto.RenovacionAutomatica;
            cmd.Parameters.Add("@pibCobroMantenimiento", SqlDbType.Bit).Value = poenProducto.CobroMantenimiento;
            cmd.Parameters.Add("@pisiNumeroDiasMantenimiento", SqlDbType.SmallInt).Value = poenProducto.NumeroDiasMantenimiento;
            cmd.Parameters.Add("@pibCobroCargos", SqlDbType.Bit).Value = poenProducto.CobroCargos;
            cmd.Parameters.Add("@pibCobroITF", SqlDbType.Bit).Value = poenProducto.CobroITF;
            cmd.Parameters.Add("@pibUsoTalonario", SqlDbType.Bit).Value = poenProducto.UsoTalonario;
            cmd.Parameters.Add("@pisiRangoEdadMinimo", SqlDbType.SmallInt).Value = poenProducto.RangoEdadMinimo;
            cmd.Parameters.Add("@pisiRangoEdadMaximo", SqlDbType.SmallInt).Value = poenProducto.RangoEdadMaximo;
            cmd.Parameters.Add("@pinRangoMontoMinimo", SqlDbType.SmallInt).Value = poenProducto.RangoMontoMinimo;
            cmd.Parameters.Add("@pinRangoMontoMaximo", SqlDbType.SmallInt).Value = poenProducto.RangoMontoMaximo;
            cmd.Parameters.Add("@pinRangoTasaMinima", SqlDbType.SmallInt).Value = poenProducto.RangoTasaMinima;
            cmd.Parameters.Add("@pinRangoTasaMaxima", SqlDbType.SmallInt).Value = poenProducto.RangoTasaMaxima;
            cmd.Parameters.Add("@piiCodigoNumeroAperturaOB", SqlDbType.Int).Value = poenProducto.CodigoNumeroAperturaOB;
            cmd.Parameters.Add("@piiCodigoProductoSisCredInka", SqlDbType.Int).Value = poenProducto.CodigoProductoSisCredInka;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenProducto.CodigoEstado;
            cmd.Parameters.Add("@pibEliminado", SqlDbType.Bit).Value = poenProducto.Eliminado;
            cmd.Parameters.Add("@pitFormaIngresoDinero", SqlDbType.Structured).Value = pldtProductoCaracteristica[0];
            cmd.Parameters.Add("@pitFormaAbonoInteres", SqlDbType.Structured).Value = pldtProductoCaracteristica[1];
            cmd.Parameters.Add("@pitGenero", SqlDbType.Structured).Value = pldtProductoCaracteristica[2];
            cmd.Parameters.Add("@pivAudNombreUsuarioCreacion", SqlDbType.VarChar).Value = poenProducto.AudNombreUsuarioCreacion;
            cmd.Parameters.Add("@pivAudIPCreacion", SqlDbType.VarChar).Value = poenProducto.AudIPCreacion;
            cmd.Parameters.Add("@pivAudMACCreacion", SqlDbType.VarChar).Value = poenProducto.AudMACCreacion;
            N = cmd.ExecuteNonQuery();
            return N;
        }

        public int fModificar(enProducto poenProducto)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sPAS_ModificarProducto", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdProducto", SqlDbType.Int).Value = poenProducto.IdProducto;
            cmd.Parameters.Add("@piiCodigoFamilia", SqlDbType.Int).Value = poenProducto.CodigoFamilia;
            cmd.Parameters.Add("@piiCodigoProducto", SqlDbType.Int).Value = poenProducto.CodigoProducto;
            cmd.Parameters.Add("@piiCodigoSubProducto", SqlDbType.Int).Value = poenProducto.CodigoSubProducto;
            cmd.Parameters.Add("@piiCodigoMoneda", SqlDbType.Int).Value = poenProducto.CodigoMoneda;
            cmd.Parameters.Add("@pidFechaVigenciaInicioComercial", SqlDbType.Date).Value = poenProducto.FechaVigenciaInicioComercial;
            cmd.Parameters.Add("@pidFechaVigenciaFinComercial", SqlDbType.Date).Value = poenProducto.FechaVigenciaFinComercial;
            cmd.Parameters.Add("@pidFechaVigenciaInicioOperativa", SqlDbType.Date).Value = poenProducto.FechaVigenciaInicioOperativa;
            cmd.Parameters.Add("@pidFechaVigenciaFinOperativa", SqlDbType.Date).Value = poenProducto.FechaVigenciaFinOperativa;
            cmd.Parameters.Add("@pivNombreProducto", SqlDbType.VarChar).Value = poenProducto.NombreProducto;
            cmd.Parameters.Add("@piiCodigoAnoBase", SqlDbType.Int).Value = poenProducto.CodigoAnoBase;
            cmd.Parameters.Add("@pinMontoMinimoCuenta", SqlDbType.Decimal).Value = poenProducto.MontoMinimoCuenta;
            cmd.Parameters.Add("@pinMontoMinimoAperturaPN", SqlDbType.Decimal).Value = poenProducto.MontoMinimoAperturaPN;
            cmd.Parameters.Add("@pinMontoMinimoAperturaPJ", SqlDbType.Decimal).Value = poenProducto.MontoMinimoAperturaPJ;
            cmd.Parameters.Add("@pibCancelacionAutomatica", SqlDbType.Bit).Value = poenProducto.CancelacionAutomatica;
            cmd.Parameters.Add("@pibCancelacionAnticipada", SqlDbType.Bit).Value = poenProducto.CancelacionAnticipada;
            cmd.Parameters.Add("@pibRenovacionAutomatica", SqlDbType.Bit).Value = poenProducto.RenovacionAutomatica;
            cmd.Parameters.Add("@pibCobroMantenimiento", SqlDbType.Bit).Value = poenProducto.CobroMantenimiento;
            cmd.Parameters.Add("@pisiNumeroDiasMantenimiento", SqlDbType.SmallInt).Value = poenProducto.NumeroDiasMantenimiento;
            cmd.Parameters.Add("@pibCobroCargos", SqlDbType.Bit).Value = poenProducto.CobroCargos;
            cmd.Parameters.Add("@pibCobroITF", SqlDbType.Bit).Value = poenProducto.CobroITF;
            cmd.Parameters.Add("@pibUsoTalonario", SqlDbType.Bit).Value = poenProducto.UsoTalonario;
            cmd.Parameters.Add("@pisiRangoEdadMinimo", SqlDbType.SmallInt).Value = poenProducto.RangoEdadMinimo;
            cmd.Parameters.Add("@pisiRangoEdadMaximo", SqlDbType.SmallInt).Value = poenProducto.RangoEdadMaximo;
            cmd.Parameters.Add("@pinRangoMontoMinimo", SqlDbType.SmallInt).Value = poenProducto.RangoMontoMinimo;
            cmd.Parameters.Add("@pinRangoMontoMaximo", SqlDbType.SmallInt).Value = poenProducto.RangoMontoMaximo;
            cmd.Parameters.Add("@pinRangoTasaMinima", SqlDbType.SmallInt).Value = poenProducto.RangoTasaMinima;
            cmd.Parameters.Add("@pinRangoTasaMaxima", SqlDbType.SmallInt).Value = poenProducto.RangoTasaMaxima;
            cmd.Parameters.Add("@piiCodigoNumeroAperturaOB", SqlDbType.Int).Value = poenProducto.CodigoNumeroAperturaOB;
            cmd.Parameters.Add("@piiCodigoProductoSisCredInka", SqlDbType.Int).Value = poenProducto.CodigoProductoSisCredInka;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenProducto.CodigoEstado;
            cmd.Parameters.Add("@pibEliminado", SqlDbType.Bit).Value = poenProducto.Eliminado;
            cmd.Parameters.Add("@pivAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenProducto.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.VarChar).Value = poenProducto.AudIPModificacion;
            cmd.Parameters.Add("@pivAudMACModificacion", SqlDbType.VarChar).Value = poenProducto.AudMACModificacion;
            N = cmd.ExecuteNonQuery();
            return (N);
        }

        public int fContar()
        {
            int totalProducto;
            SqlCommand cmd = new SqlCommand("sPAS_ContarProducto", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            totalProducto = (int)cmd.ExecuteScalar();
            return (totalProducto);
        }
    }
}
